<!--********************************************************************
* Copyright© 2000 - 2025 SuperMap Software Co.Ltd. All rights reserved.
*********************************************************************-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title data-i18n="resources.title_bufferAnalystServiceGeometry"></title>
    <script type="text/javascript" src="../js/include-web.js"></script>
</head>
<body style="margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
<script type="text/javascript" src="../../dist/mapboxgl/include-mapboxgl.js"></script>
<script type="text/javascript">
    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
    var map,
        attribution = "<a href='https://www.mapbox.com/about/maps/' target='_blank'>© Mapbox </a>" +
            " with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a> | </span>" +
            " Map Data <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a></span> ",
        baseUrl = host + "/iserver/services/map-jingjin/rest/maps/京津地区地图/zxyTileImage.png?z={z}&x={x}&y={y}",
        serviceUrl = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
    map = new mapboxgl.Map({
        container: 'map',
        style: {
            "version": 8,
            "sources": {
                "raster-tiles": {
                    "attribution": attribution,
                    "type": "raster",
                    "tiles": [baseUrl],
                    "tileSize": 256
                }
            },
            "layers": [{
                "id": "simple-tiles",
                "type": "raster",
                "source": "raster-tiles",
            }]
        },
        center: [116.2740019864, 39.8970124079],
        zoom: 12
    });
    map.addControl(new mapboxgl.NavigationControl(), 'top-left');
    map.addControl(new mapboxgl.supermap.LogoControl({ link: "https://iclient.supermap.io" }), 'bottom-right');

    map.on("load", function () {
        bufferAnalystFromGeometry();
    });

    function bufferAnalystFromGeometry() {
        var pointList = [
            [116.1916654036, 39.8888542507],
            [116.2031567225, 39.8888542507],
            [116.2156351162, 39.8963250173],
            [116.2740019864, 39.8970124079],
            [116.3103285499, 39.8970574832],
            [116.3321510064, 39.8970392162],
            [116.3377051439, 39.8973437531],
            [116.3463089006, 39.8978391816],
        ];

        //加载线
        var geometryLine = {
            "type": "Feature",
            "geometry": {
                "type": "LineString",
                "coordinates": pointList
            }
        };
        map.addLayer({
            "id": "bufferLine",
            "type": "line",
            "source": {
                "type": "geojson",
                "data": geometryLine
            },
            "layout": {
                "line-join": "round",
                "line-cap": "round"
            },
            "paint": {
                "line-color": "red",
                "line-width": 4
            },
        });

        //加载点
        var pointGeometryFetures = [];
        for (i = 0; i < pointList.length; i++) {
            pointGeometryFetures.push({
                "type": "Feature",
                "geometry": {
                    "type": "Point",
                    "coordinates": pointList[i],
                }
            });
        }
        map.addLayer({
            "id": "bufferPoint",
            "type": "circle",
            "source": {
                "type": "geojson",
                "data": {
                    "type": "FeatureCollection",
                    "features": pointGeometryFetures
                }
            },
            "paint": {
                "circle-radius": 6, /* 圆的直径，单位像素 */
                "circle-color": "black", /* 圆的颜色 */
            },
            "filter": ["==", "$type", "Point"],
        });

        var geoBufferAnalystParams = new mapboxgl.supermap.GeometryBufferAnalystParameters({
            sourceGeometry: geometryLine,
            sourceGeometrySRID: 4326,
            bufferSetting: new mapboxgl.supermap.BufferSetting({
                endType: mapboxgl.supermap.BufferEndType.ROUND,
                leftDistance: new mapboxgl.supermap.BufferDistance({value: 300}),
                rightDistance: new mapboxgl.supermap.BufferDistance({value: 300}),
                radiusUnit: "METER",
                semicircleLineSegment: 10
            })

        });
        // new mapboxgl.supermap.SpatialAnalystService(serviceUrl).bufferAnalysis(geoBufferAnalystParams, function (serviceResult) {
        //     map.addSource("queryDatas", {
        //         "type": "geojson",
        //         "data": {
        //             "type": "FeatureCollection",
        //             "features": [serviceResult.result.resultGeometry]
        //         }
        //     });
        //     map.addLayer({
        //         "id": "queryDatas",
        //         "type": "fill",
        //         "source": "queryDatas",
        //         "paint": {
        //             "fill-color": "red", /* 填充的颜色 */
        //             "fill-opacity": 0.4  /* 透明度 */
        //         },
        //     });
        // });

        new mapboxgl.supermap.SpatialAnalystService(serviceUrl).bufferAnalysis(geoBufferAnalystParams).then(function (serviceResult) {
            map.addSource("queryDatas", {
                "type": "geojson",
                "data": {
                    "type": "FeatureCollection",
                    "features": [serviceResult.result.resultGeometry]
                }
            });
            map.addLayer({
                "id": "queryDatas",
                "type": "fill",
                "source": "queryDatas",
                "paint": {
                    "fill-color": "red", /* 填充的颜色 */
                    "fill-opacity": 0.4  /* 透明度 */
                },
            });
        });
    }
</script>
</body>
</html>